/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.janalise.model;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author boskyn9
 */
public class Regra implements Comparable<Regra> {

    private String chave;
    private Long ocorrencia;
    private List<String> semelhantes = new ArrayList<String>();

    public Regra(String chave, Long ocorrencia,List<String> semelhantes) {
        this.chave = chave;
        this.ocorrencia = ocorrencia;
        this.semelhantes = semelhantes;
    }

    public Regra(String chave, Long ocorrencia) {
        this.chave = chave;
        this.ocorrencia = ocorrencia;
    }

    public Regra() {
    }

    public List<String> getSemelhantes() {
        return semelhantes;
    }

    public void setSemelhantes(List<String> semelhantes) {
        this.semelhantes = semelhantes;
    }

    private void addSemelhantes(String semelhante){
        if(!this.semelhantes.contains(semelhante))
            this.semelhantes.add(semelhante);
    }

    public void removeSemelhantes(String semelhante){
        this.semelhantes.remove(semelhante);
    }

    public String getChave() {
        return chave;
    }

    public void setChave(String chave) {
        this.chave = chave;
    }

    public Long getOcorrencia() {
        return ocorrencia;
    }

    public void setOcorrencia(Long ocorrencia) {
        this.ocorrencia = ocorrencia;
    }

    public void addOcorrencia(String semelhante){
        ocorrencia++;
        this.addSemelhantes(semelhante);        
    }

    public Float getPercentual(Integer total){
        Double result = total!=null && total>0?ocorrencia/(total*0.01):0d;
        BigDecimal numerao = new BigDecimal(result);
        numerao = numerao.setScale(2,RoundingMode.HALF_UP);
        return numerao.floatValue();
    }

    @Override
    public String toString(){
        return "Chave: "+getChave()+
               "\nOcorrecias: "+getOcorrencia()+
               "\nSemelhante "+semelhantes+
               "\n----------------------------------------------\n";
    }

    public int compareTo(Regra o) {
        int comp = ocorrencia.compareTo(o.getOcorrencia());
        if(comp == 0)
            comp = chave.compareTo(o.getChave());
        return comp*(-1);
    }

}
